package travelDream.entities;

import java.io.Serializable;
import java.lang.Boolean;
import java.lang.Float;
import java.lang.Integer;
import java.lang.String;
import java.util.List;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import travelDream.dto.EscursioneDTO;

/**
 * Entity implementation class for Entity: Escursione
 *
 */
@Entity
@NamedQueries ({
	@NamedQuery(name="escursione.findAll", query="SELECT e FROM Escursione e WHERE e.eliminato=FALSE"),
	@NamedQuery(name="escursione.findByNome", query="SELECT e FROM Escursione e WHERE e.nome LIKE :nome and e.eliminato=false"),
	@NamedQuery(name="escursione.findByCitta", query="SELECT e FROM Escursione e WHERE :citta = e.luogo_fruizione and e.eliminato=false"),
	@NamedQuery(name="escursione.findVendibileByNome", query="SELECT e FROM Escursione e WHERE e.nome LIKE :nome and e.eliminato=false and e.in_vendita=true"),
	@NamedQuery(name="escursione.findVendibileByCitta", query="SELECT e FROM Escursione e WHERE :citta = e.luogo_fruizione and e.eliminato=false and e.in_vendita=true"),
	@NamedQuery(name="escursione.findAllVendibili", query="SELECT e FROM Escursione e WHERE e.in_vendita=true"),
})

public class Escursione implements Serializable, IAttivita {
	   
	@Id
	@GeneratedValue
	private Integer id;
	@NotNull
	private String nome;
	@NotNull
	private String descrizione;
	@NotNull
	private String luogo_fruizione;
	@NotNull
	private Boolean in_vendita;
	@NotNull
	private Boolean eliminato;
	@NotNull
	private Float prezzo;
	
	@ManyToMany(mappedBy="escursioni")
	private List<PacchettoPreconfigurato> pacchetti_preconfigurati;
	
	@ManyToMany(mappedBy="giftlist_escursioni")
	private List<PacchettoAcquistato> pacchetti_giftlist;
	
	private static final long serialVersionUID = 1L;

	public Escursione() {
		super();
	}
	
	public Escursione(EscursioneDTO escursione) {
		super();
		this.nome = escursione.getNome();
		this.luogo_fruizione = escursione.getLuogo_Fruizione();
		this.prezzo = escursione.getPrezzo();
		this.descrizione = escursione.getDescrizione();
		this.in_vendita = escursione.getInVendita();
		this.eliminato = escursione.getEliminato();
	}   
	
	public List<PacchettoAcquistato> getPacchetti_giftlist() {
		return pacchetti_giftlist;
	}

	public void setPacchetti_giftlist(
			List<PacchettoAcquistato> pacchetti_giftlist) {
		this.pacchetti_giftlist = pacchetti_giftlist;
	}

	public String getLuogo_Fruizione() {
		return this.luogo_fruizione;
	}

	public void setLuogo_Fruizione(String luogo_fruizione) {
		this.luogo_fruizione = luogo_fruizione;
	}   
	public Boolean getIn_Vendita() {
		return this.in_vendita;
	}

	@Override
	public void setIn_vendita(Boolean in_vendita) {
		this.in_vendita = in_vendita;
	}   
	public Boolean getEliminato() {
		return this.eliminato;
	}

	public void setEliminato(Boolean eliminato) {
		this.eliminato = eliminato;
	}   
	public Float getPrezzo() {
		return this.prezzo;
	}

	public void setPrezzo(Float prezzo) {
		this.prezzo = prezzo;
	}
	
	public List<PacchettoPreconfigurato> getPacchetti_preconfigurati() {
		return pacchetti_preconfigurati;
	}
	
	public void setPacchetti_preconfigurati(
			List<PacchettoPreconfigurato> pacchetti_preconfigurati) {
		this.pacchetti_preconfigurati = pacchetti_preconfigurati;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getDescrizione() {
		return descrizione;
	}
	public void setDescrizione(String descrizione) {
		this.descrizione = descrizione;
	}

	@Override
	public int getId() {
		return id;
	}

	@Override
	public Boolean getIn_vendita() {
		return this.in_vendita;
	}

	@Override
	public void setId(int id) {
		this.id = id;
	} 
}
